import apiClient from '@/plugins/axios.js'

/**
 * 文章管理相关API服务
 */
export const articleAPI = {
  /**
   * 获取所有文章列表
   * @returns {Promise} 文章列表响应
   */
  getAllArticles() {
    return apiClient.get('/articles')
  },

  /**
   * 分页获取所有文章
   * @param {number} current - 当前页码（从1开始）
   * @param {number} size - 每页大小
   * @returns {Promise} 分页数据响应
   */
  getArticlesPage(current, size) {
    return apiClient.get('/articles/page', {
      params: { current, size }
    })
  },

  /**
   * 分页获取已发布文章
   * @param {number} current - 当前页码（从1开始）
   * @param {number} size - 每页大小
   * @returns {Promise} 分页数据响应
   */
  getPublishedArticlesPage(current, size) {
    return apiClient.get('/articles/published/page', {
      params: { current, size }
    })
  },

  /**
   * 根据关键词搜索文章
   * @param {string} keyword - 搜索关键词
   * @returns {Promise} 搜索结果响应
   */
  searchArticles(keyword) {
    return apiClient.get(`/articles/search?keyword=${encodeURIComponent(keyword)}`)
  },

  /**
   * 分页搜索文章
   * @param {string} keyword - 搜索关键词
   * @param {number} current - 当前页码（从1开始）
   * @param {number} size - 每页大小
   * @returns {Promise} 分页搜索结果响应
   */
  searchArticlesPage(keyword, current, size) {
    return apiClient.get('/articles/search/page', {
      params: { keyword, current, size }
    })
  },

  /**
   * 分页获取指定分类的文章
   * @param {string} category - 分类值
   * @param {number} current - 当前页码（从1开始）
   * @param {number} size - 每页大小
   * @returns {Promise} 分页数据响应
   */
  getArticlesByCategoryPage(category, current, size) {
    return apiClient.get('/articles/category/page', {
      params: { category, current, size }
    })
  },

  /**
   * 分页获取指定多个分类的文章
   * @param {string} categories - 分类列表（逗号分隔）
   * @param {number} current - 当前页码（从1开始）
   * @param {number} size - 每页大小
   * @returns {Promise} 分页数据响应
   */
  getArticlesByCategoriesPage(categories, current, size) {
    return apiClient.get('/articles/categories/page', {
      params: { categories, current, size }
    })
  },

  /**
   * 获取文章统计信息
   * @returns {Promise} 文章统计响应
   */
  getArticleStats() {
    return apiClient.get('/articles/stats')
  },

  /**
   * 根据ID获取文章信息
   * @param {number} id - 文章ID
   * @returns {Promise} 文章信息响应
   */
  getArticleById(id) {
    return apiClient.get(`/articles/${id}`)
  },

  /**
   * 创建新文章
   * @param {Object} articleData - 文章数据
   * @param {string} articleData.title - 文章标题
   * @param {string} articleData.content - 文章内容
   * @param {string} articleData.summary - 文章摘要
   * @param {string} articleData.status - 文章状态 (DRAFT/PUBLISHED/ARCHIVED)
   * @param {number} articleData.authorId - 作者ID
   * @returns {Promise} 创建响应
   */
  createArticle(articleData) {
    return apiClient.post('/articles', articleData)
  },

  /**
   * 更新文章信息
   * @param {number} id - 文章ID
   * @param {Object} articleData - 更新的文章数据
   * @returns {Promise} 更新响应
   */
  updateArticle(id, articleData) {
    return apiClient.put(`/articles/${id}`, articleData)
  },

  /**
   * 发布文章
   * @param {number} id - 文章ID
   * @returns {Promise} 发布响应
   */
  publishArticle(id) {
    return apiClient.put(`/articles/${id}/publish`)
  },

  /**
   * 归档文章
   * @param {number} id - 文章ID
   * @returns {Promise} 归档响应
   */
  archiveArticle(id) {
    return apiClient.put(`/articles/${id}/archive`)
  },

  /**
   * 删除文章
   * @param {number} id - 文章ID
   * @returns {Promise} 删除响应
   */
  deleteArticle(id) {
    return apiClient.delete(`/articles/${id}`)
  },

  /**
   * 分页获取已发布文章并包含热度和评论数统计
   * @param {number} current - 当前页码（从1开始）
   * @param {number} size - 每页大小
   * @returns {Promise} 分页数据响应
   */
  getPublishedArticlesPageWithStats(current, size) {
    return apiClient.get('/articles/published/page/stats', {
      params: { current, size }
    })
  },

  /**
   * 分页获取指定分类的文章并包含热度和评论数统计
   * @param {string} category - 分类值
   * @param {number} current - 当前页码（从1开始）
   * @param {number} size - 每页大小
   * @returns {Promise} 分页数据响应
   */
  getArticlesByCategoryPageWithStats(category, current, size) {
    return apiClient.get('/articles/category/page/stats', {
      params: { category, current, size }
    })
  }
}

export default articleAPI
